﻿// Copyright 2007-2008 Rory Plaire (codekaizen@gmail.com)

using System;
using System.Collections.Generic;

namespace NPack.Interfaces
{
    public interface IMatrixFactory<TMatrix, T>
        where T : IEquatable<T>, IComparable<T>, IComputable<T>, IConvertible, IFormattable
        where TMatrix : IMatrix<T>, IEquatable<TMatrix>, IComparable<TMatrix>, IComputable<TMatrix>
    {
        TMatrix CreateMatrix(Int32 rowCount, Int32 columnCount);
        TMatrix CreateMatrix(Int32 rowCount, Int32 columnCount, IEnumerable<T> values);
        TMatrix CreateMatrix(MatrixFormat format, Int32 rowCount, Int32 columnCount);
    }
}
